<?php

namespace app\middleware;

use app\model\UserMsg;
use app\middleware\JWTMiddleware;

class AuthLogin
{
    // 解析token
    // 获取用户id $user_id = AuthLogin::getAccessToken($request);
    public static function getAccessToken($request){
        // 在前后端分离的情况下，不要使用session，因为session无效。
        $access_token =  $request->header('access-token');
        // 去除bearer-
        $access_token = str_replace('bearer-','',$access_token);

        // 解析token
        $pre_user = JWTMiddleware::parseToken($access_token);

        if($pre_user['status'] && $access_token ) {
            // 返回解析的用户uid;
            // $pre_user['data']['uid']无效
            return $pre_user['data']->uid;
        }else {
            return false;
        }

    }

    public function handle($request, \Closure $next)
    {
        $pre_user_id =  AuthLogin::getAccessToken($request);
        if($pre_user_id){
            // 判断帐号是否存在，（并且没有注销）
            $res = UserMsg::where(['id'=>$pre_user_id ])->find();
            if($res && $res['isDelete'] != 1){
                // 判断帐号是否登录token
                if($res['token']){
                    $this->user = $res;
                    return $next($request);
                }else{
                    return json( ['msg'=>'当前未登录！请进行登录','code'=>403]);
                }
            }else{
                return json( ['msg'=>'帐号不存在','code'=>403]);
            }
        }else{
            return json( ['msg'=>'token错误！无法访问','code'=>403]);
        }


    }
}